package controle;

import dominio.Usuario;
import infraestrutura.UsuarioSingleton;
import infraestrutura.UsuarioValidation;

public class CadastroUsuarioBean {
	private String login;
	private String senha;
	private String confirmarSenha;
	private String nome;
	private int idade;
	private char sexo;

	private boolean loginValido;
	private boolean senhaValida;
	private boolean nomeValido;
	private boolean idadeValida;
	private boolean loginExistente;
	private boolean senhasIguais;

	public CadastroUsuarioBean() {
		loginValido = true;
		senhaValida = true;
		nomeValido = true;
		idadeValida = true;
		loginExistente = false;
		setSenhasIguais(true);
	}
	
	public String send() {
		setLoginValido(UsuarioValidation.validaLogin(login));
		setSenhaValida(UsuarioValidation.validaSenha(senha));
		setNomeValido(UsuarioValidation.validaNome(nome));
		setIdadeValida(UsuarioValidation.validaIdade(idade));
		setSenhasIguais(senha.compareTo(confirmarSenha) == 0);

		if(isLoginValido() && isSenhaValida() &&
				isNomeValido() && isIdadeValida()) {
			setLoginExistente(UsuarioValidation.existeLogin(login));
			if(!isLoginExistente()) {				
				if(isSenhasIguais()) {
					UsuarioSingleton.getInstance().add(new Usuario(login, senha, nome, idade, sexo));
					UsuarioSingleton.print();
					return("success");
				}
			}
		}

		return("failure");
	}

	public String getLogin() {
		return login;
	}

	public String getSenha() {
		return senha;
	}

	public String getConfirmarSenha() {
		return confirmarSenha;
	}

	public String getNome() {
		return nome;
	}

	public int getIdade() {
		return idade;
	}

	public char getSexo() {
		return sexo;
	}

	public boolean isLoginValido() {
		return loginValido;
	}

	public boolean isSenhaValida() {
		return senhaValida;
	}

	public boolean isNomeValido() {
		return nomeValido;
	}

	public boolean isIdadeValida() {
		return idadeValida;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public void setConfirmarSenha(String confirmarSenha) {
		this.confirmarSenha = confirmarSenha;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}

	public void setSexo(char sexo) {
		this.sexo = sexo;
	}

	public void setLoginValido(boolean loginValido) {
		this.loginValido = loginValido;
	}

	public void setSenhaValida(boolean senhaValida) {
		this.senhaValida = senhaValida;
	}

	public void setNomeValido(boolean nomeValido) {
		this.nomeValido = nomeValido;
	}

	public void setIdadeValida(boolean idadeValida) {
		this.idadeValida = idadeValida;
	}

	public void setLoginExistente(boolean loginExistente) {
		this.loginExistente = loginExistente;
	}

	public boolean isLoginExistente() {
		return loginExistente;
	}

	public void setSenhasIguais(boolean senhasIguais) {
		this.senhasIguais = senhasIguais;
	}

	public boolean isSenhasIguais() {
		return senhasIguais;
	}

}
